home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SAVESCRN.SWG / 0012_Screen Save Object.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  2KB  |  66 lines

  1. { - SCREEN.PAS -}
  2. unit screen;
  3. Interface
  4. uses crt,dos;
  5.   type
  6.        ScreenRec = Record
  7.          Character:Byte;
  8.          Attribute:Byte;
  9.        end;
  10.        SnapShot = record
  11.          Screen:array[1..4000] of ScreenRec;
  12.          StoreX:byte;
  13.          StoreY:byte;
  14.        end;
  15.        ScreenStore=object
  16.          Memory:SnapShot;
  17.          constructor Init(InitX,InitY,InitChar,InitColor:byte);
  18.          procedure storescreen;
  19.          procedure restorescreen;
  20.        end;
  21.        ScreenStorePointer = ^ScreenStore;
  22. Implementation
  23.   CONSTRUCTOR ScreenStore.Init(InitX,InitY,InitChar,InitColor:byte);
  24.     {** Initializes to Cleared Screens **}
  25.     var
  26.       Count:integer;
  27.     begin
  28.       Count:=1;
  29.       while Count<=4000 do
  30.         begin
  31.           FillChar(Memory.Screen[Count].Character,
  32.             SizeOf(Memory.Screen[Count].Character),InitChar);
  33.           FillChar(Memory.Screen[Count].Attribute,
  34.             SizeOf(Memory.Screen[Count].Attribute),InitColor);
  35.           inc(Count);
  36.         end;
  37.       Memory.StoreX:=InitX;
  38.       Memory.StoreY:=InitY;
  39.     end;
  40.   PROCEDURE ScreenStore.StoreScreen;
  41.     var
  42.       MonoAddress:  char absolute $B000:0000;
  43.       ColorAddress: char absolute $B800:0000;
  44.       begin
  45.         if lastmode=mono then
  46.           move(monoAddress,Memory.Screen,8000)
  47.         else
  48.           move(colorAddress,Memory.Screen,8000);
  49.         Memory.StoreX:=WhereX;
  50.         Memory.StoreY:=WhereY;
  51.       end;
  52.   {STORESCREEN}
  53.   PROCEDURE ScreenStore.RestoreScreen;
  54.     var
  55.       MonoAddress:  char absolute $B000:0000;
  56.       ColorAddress: char absolute $B800:0000;
  57.       begin
  58.         if lastmode=mono then
  59.           move(Memory.Screen,monoAddress,8000)
  60.         else
  61.           move(Memory.Screen,colorAddress,8000);
  62.         gotoxy(Memory.StoreX,Memory.StoreY);
  63.       end;
  64.   begin
  65.   end.
  66.